package com.chenfan.mcn.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chenfan.mcn.extension.Res;
import com.chenfan.mcn.model.McnPage;
import com.chenfan.mcn.model.dto.MonthlyTargetDTO;
import com.chenfan.mcn.model.dto.MonthlyTargetSearchDTO;
import com.chenfan.mcn.model.vo.MonthlyTargetDetailVO;
import com.chenfan.mcn.model.vo.MonthlyTargetListVO;
import com.chenfan.mcn.model.vo.MonthlyTargetPageVO;
import com.chenfan.mcn.service.MonthlyTargetService;
import com.chenfan.privilege.common.config.SearchAuthority;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 月度目标
 * @Author liuyang
 * @Date 2021/10/19
 * @Time 15:04
 * @Version V1.0
 **/
@RestController
@RequestMapping("/monthlyTarget")
public class MonthlyTargetController {

    @Autowired
    private MonthlyTargetService monthlyTargetService;

    /**
     * 新增月度部门目标
     *
     * @param monthlyTargetList {@link List<MonthlyTargetDTO>}
     * @return {@link Integer}
     */
    @PostMapping("/add")
    public Res<Integer> addTarget(@RequestBody List<MonthlyTargetDTO> monthlyTargetList) {
        return Res.ok(monthlyTargetService.addTarget(monthlyTargetList));
    }


    /**
     * 指定月度部门目标金额详情
     *
     * @param monthlyCode 月度编号
     * @return List<MonthlyTargetDetailVO>
     */
    @GetMapping("/amount/details")
    public Res<List<MonthlyTargetDetailVO>> amountDetails(@RequestParam String monthlyCode) {
        return Res.ok(monthlyTargetService.amountDetails(monthlyCode));
    }


    /**
     * 部门目标详情
     *
     * @param id id
     * @return MonthlyTargetDTO
     */
    @GetMapping("/detail")
    public Res<MonthlyTargetDTO> targetDetail(@RequestParam Long id) {
        return Res.ok(monthlyTargetService.targetDetail(id));
    }


    /**
     * 部门目标删除
     *
     * @param id id
     * @return Integer
     */
    @GetMapping("/delete")
    public Res<Integer> deleteTarget(@RequestParam Long id) {
        return Res.ok(monthlyTargetService.deleteTarget(id));
    }


    /**
     * 月度目标编辑
     *
     * @param monthlyTargetDTO {@link MonthlyTargetDTO}
     * @return {@link Integer}
     */
    @PostMapping("/update")
    public Res<Integer> updateTarget(@RequestBody MonthlyTargetDTO monthlyTargetDTO) {
        return Res.ok(monthlyTargetService.updateTarget(monthlyTargetDTO));
    }


    /**
     * 月度目标列表
     *
     * @param dto {@link MonthlyTargetSearchDTO}
     * @return {@link MonthlyTargetListVO}
     */
    @GetMapping("/list")
    public Res<MonthlyTargetListVO> targetList(@SearchAuthority MonthlyTargetSearchDTO dto) {
        return Res.ok(monthlyTargetService.targetList(dto));
    }


    /**
     * 指定部门月度目标
     *
     * @param mcnPage {@link McnPage}
     * @param dto     {@link MonthlyTargetSearchDTO}
     * @return {@link Page}
     */
    @GetMapping("/page")
    public Res<Page<MonthlyTargetPageVO>> targetPage(McnPage<MonthlyTargetPageVO> mcnPage, @SearchAuthority MonthlyTargetSearchDTO dto) {
        return Res.ok(monthlyTargetService.targetPage(mcnPage, dto));
    }

}
